home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr25 / gnuplsrc.zip / PATCHES.OS2 < prev    next >
Text File  |  1993-03-21  |  15KB  |  612 lines

  1. *** command.c    1992/07/23 10:26:10    3.26
  2. --- command.c    1992/07/23 11:26:18
  3. ***************
  4. *** 84,90 ****
  5. --- 84,94 ----
  6.   #ifdef AMIGA_LC_5_1
  7.   #define HELPFILE "S:gnuplot.gih"
  8.   #else
  9. + #ifdef OS2
  10. + #define HELPFILE "gnuplot.gih"
  11. + #else
  12.   #define HELPFILE "docs/gnuplot.gih" /* changed by makefile */
  13. + #endif /* OS2 */
  14.   #endif /* AMIGA_LC_5_1 */
  15.   #endif /* HELPFILE */
  16.   
  17. ***************
  18. *** 103,108 ****
  19. --- 107,118 ----
  20.    */
  21.   extern struct gnuplot_contours *contour();
  22.   
  23. + #ifdef OS2
  24. + /* emx has getcwd, chdir that can handle drive names */
  25. + #define getcwd _getcwd2
  26. + #define chdir  _chdir2
  27. + #endif /* OS2 */
  28.   #if defined(unix) && !defined(hpux)
  29.   #ifdef GETCWD
  30.   extern char *getcwd();    /* some Unix's use getcwd */
  31. ***************
  32. *** 3314,3332 ****
  33.   }
  34.   #else /* VFORK */
  35.   
  36. ! #ifdef AMIGA_LC_5_1
  37.   do_shell()
  38.   {
  39.   register char *shell;
  40.       if (!(shell = getenv("SHELL")))
  41.           shell = SHELL;
  42.       if (system(shell))
  43.           os_error("system() failed",NO_CARET);
  44.   
  45.       (void) putc('\n',stderr);
  46.   }
  47. ! #else /* AMIGA_LC_5_1 */
  48.   
  49.   #define EXEC "exec "
  50.   do_shell()
  51. --- 3324,3348 ----
  52.   }
  53.   #else /* VFORK */
  54.   
  55. ! #if defined( AMIGA_LC_5_1 ) || defined ( OS2 )
  56.   do_shell()
  57.   {
  58.   register char *shell;
  59. + #ifdef OS2
  60. +     if (!(shell = getenv("COMSPEC")))   /* shouldn't fail, but .. */
  61. +         shell = "c:\\os2\\cmd.exe"; /* try default ? */
  62. +     if (system(shell)==-1)              /* emx returns -1 for error, else */
  63. +                                             /* code from spawn, so trap it */
  64. + #else
  65.       if (!(shell = getenv("SHELL")))
  66.           shell = SHELL;
  67.       if (system(shell))
  68. + #endif /* OS2 */
  69.           os_error("system() failed",NO_CARET);
  70.   
  71.       (void) putc('\n',stderr);
  72.   }
  73. ! #else /* AMIGA_LC_5_1, OS2 */
  74.   
  75.   #define EXEC "exec "
  76.   do_shell()
  77. *** graph3d.c    1992/07/19 12:27:44    3.26
  78. --- graph3d.c    1992/07/23 11:26:36
  79. ***************
  80. *** 780,785 ****
  81. --- 780,789 ----
  82.   {
  83.   int len,x1,y1,x2,y2;
  84.   register double xr,xnorm,tics,tic,l10;
  85. + #ifdef OS2
  86. + /* GCC has problems with x?y:z below, so work around */
  87. + int temp ;
  88. + #endif
  89.   
  90.       xr = fabs(tmin-tmax);
  91.   
  92. ***************
  93. *** 804,819 ****
  94. --- 808,839 ----
  95.           return -1.0;                              /* No tics! */
  96.   
  97.       l10 = log10(xr);
  98. + #ifdef OS2
  99. +                 if( l10 >= 0.0 ) temp = (int) l10 ;
  100. +                 else temp = (int)l10 - 1 ;
  101. + #endif
  102.       if (logscale) {
  103. + #ifdef OS2
  104. +                 tic = dbl_raise(10.0,temp);
  105. + #else
  106.           tic = dbl_raise(10.0,(l10 >= 0.0 ) ? (int)l10 : ((int)l10-1));
  107. + #endif
  108.           if (tic < 1.0)
  109.               tic = 1.0;
  110.       } else {
  111. + #ifdef OS2
  112. +         xnorm = pow(10.0,l10-(double)temp);
  113. + #else
  114.           xnorm = pow(10.0,l10-(double)((l10 >= 0.0 ) ? (int)l10 : ((int)l10-1)));
  115. + #endif
  116.           if (xnorm <= 5)
  117.               tics = 0.5;
  118.           else tics = 1.0;
  119. + #ifdef OS2
  120. +         tic = tics * dbl_raise(10.0,temp);
  121. + #else
  122.           tic = tics * dbl_raise(10.0,(l10 >= 0.0 ) ? (int)l10 : ((int)l10-1));
  123. + #endif
  124.       }
  125.       return(tic);
  126.   }
  127. *** graphics.c    1992/07/19 11:21:58    3.26
  128. --- graphics.c    1992/07/23 11:45:48
  129. ***************
  130. *** 177,198 ****
  131.   BOOLEAN logscale;
  132.   {
  133.   register double xr,xnorm,tics,tic,l10;
  134.       xr = fabs(tmin-tmax);
  135.       
  136.       l10 = log10(xr);
  137.       if (logscale) {
  138.           tic = dbl_raise(10.0,(l10 >= 0.0 ) ? (int)l10 : ((int)l10-1));
  139.           if (tic < 1.0)
  140.               tic = 1.0;
  141.       } else {
  142.           xnorm = pow(10.0,l10-(double)((l10 >= 0.0 ) ? (int)l10 : ((int)l10-1)));
  143.           if (xnorm <= 2)
  144.               tics = 0.2;
  145.           else if (xnorm <= 5)
  146.               tics = 0.5;
  147.           else tics = 1.0;    
  148.           tic = tics * dbl_raise(10.0,(l10 >= 0.0 ) ? (int)l10 : ((int)l10-1));
  149.       }
  150.       return(tic);
  151.   }
  152. --- 176,216 ----
  153.   BOOLEAN logscale;
  154.   {
  155.   register double xr,xnorm,tics,tic,l10;
  156. ! #ifdef OS2
  157. ! /* GCC has problems with x?y:z below, so work around */
  158. ! int temp ;
  159. ! #endif
  160.       xr = fabs(tmin-tmax);
  161.       
  162.       l10 = log10(xr);
  163. + #ifdef OS2
  164. +                 if( l10 >= 0.0 ) temp = (int) l10 ;
  165. +                 else temp = (int)l10 - 1 ;
  166. + #endif
  167.       if (logscale) {
  168. + #ifdef OS2
  169. +                 tic = dbl_raise(10.0,temp);
  170. + #else
  171.           tic = dbl_raise(10.0,(l10 >= 0.0 ) ? (int)l10 : ((int)l10-1));
  172. + #endif
  173.           if (tic < 1.0)
  174.               tic = 1.0;
  175.       } else {
  176. + #ifdef OS2
  177. +         xnorm = pow(10.0,l10-(double)temp);
  178. + #else
  179.           xnorm = pow(10.0,l10-(double)((l10 >= 0.0 ) ? (int)l10 : ((int)l10-1)));
  180. + #endif
  181.           if (xnorm <= 2)
  182.               tics = 0.2;
  183.           else if (xnorm <= 5)
  184.               tics = 0.5;
  185.           else tics = 1.0;    
  186. + #ifdef OS2
  187. +         tic = tics * dbl_raise(10.0,temp);
  188. + #else
  189.           tic = tics * dbl_raise(10.0,(l10 >= 0.0 ) ? (int)l10 : ((int)l10-1));
  190. + #endif
  191.       }
  192.       return(tic);
  193.   }
  194. *** help.c    1992/07/19 13:24:27    3.26
  195. --- help.c    1992/07/23 11:26:50
  196. ***************
  197. *** 38,43 ****
  198. --- 38,48 ----
  199.    *  bug-gnuplot@ames.arc.nasa.gov.
  200.    */
  201.   
  202. + #ifdef OS2
  203. + /* GCC defines unix, but no PAGER, so... */
  204. + #undef unix
  205. + #endif
  206. +  
  207.   #include <stdio.h>
  208.   
  209.   extern int errno;
  210. *** parse.c    1992/07/22 10:31:24    3.26
  211. --- parse.c    1992/07/23 11:27:06
  212. ***************
  213. *** 70,76 ****
  214.   #ifdef __TURBOC__
  215.   void fpe()
  216.   #else
  217. ! #if defined( __ZTC__ ) || defined( _CRAY ) || defined( sgi )
  218.   void fpe(an_int)
  219.   int an_int;
  220.   #else
  221. --- 70,76 ----
  222.   #ifdef __TURBOC__
  223.   void fpe()
  224.   #else
  225. ! #if defined( __ZTC__ ) || defined( _CRAY ) || defined( sgi ) || defined (OS2)
  226.   void fpe(an_int)
  227.   int an_int;
  228.   #else
  229. ***************
  230. *** 91,97 ****
  231. --- 91,101 ----
  232.   #ifdef PC    /* thanks to lotto@wjh12.UUCP for telling us about this  */
  233.       _fpreset();
  234.   #endif
  235. + #ifdef OS2
  236. +     (void) signal(an_int, SIG_ACK);
  237. + #else
  238.       (void) signal(SIGFPE, fpe);
  239. + #endif
  240.       undefined = TRUE;
  241.       longjmp(fpe_env, TRUE);
  242.   }
  243. *** plot.c    1992/07/19 10:52:50    3.26
  244. --- plot.c    1992/07/23 11:27:12
  245. ***************
  246. *** 139,149 ****
  247.   #define HOME "sys$login:"
  248.   
  249.   #else /* vms */
  250. ! #ifdef MSDOS
  251.   
  252.   #define HOME "GNUPLOT"
  253.   
  254. ! #else /* MSDOS */
  255.   
  256.   #if defined(AMIGA_AC_5) || defined(AMIGA_LC_5_1)
  257.   
  258. --- 139,149 ----
  259.   #define HOME "sys$login:"
  260.   
  261.   #else /* vms */
  262. ! #if defined(MSDOS) || defined(OS2)
  263.   
  264.   #define HOME "GNUPLOT"
  265.   
  266. ! #else /* MSDOS, OS2 */
  267.   
  268.   #if defined(AMIGA_AC_5) || defined(AMIGA_LC_5_1)
  269.   
  270. ***************
  271. *** 156,163 ****
  272. --- 156,169 ----
  273.   #endif /* MSDOS */
  274.   #endif /* vms */
  275.   
  276.   #ifdef unix
  277. + #ifdef OS2
  278. + /* emx defines unix, but use ms-dos style file */
  279. + #define PLOTRC "gnuplot.ini"
  280. + #else
  281.   #define PLOTRC ".gnuplot"
  282. + #endif /* OS2 */
  283.   #else /* unix */
  284.   #if defined(AMIGA_AC_5) || defined(AMIGA_LC_5_1)
  285.   #define PLOTRC ".gnuplot"
  286. ***************
  287. *** 173,179 ****
  288.   void inter(an_int)
  289.   int an_int;
  290.   #else
  291. ! #ifdef NEXT
  292.   void inter(int an_int)
  293.   #else
  294.   #ifdef sgi
  295. --- 179,185 ----
  296.   void inter(an_int)
  297.   int an_int;
  298.   #else
  299. ! #if defined( NEXT ) || defined ( OS2 )
  300.   void inter(int an_int)
  301.   #else
  302.   #ifdef sgi
  303. ***************
  304. *** 193,199 ****
  305. --- 199,209 ----
  306.       (void) signal(SIGINT, ss_interrupt);
  307.   #endif
  308.   #else  /* MSDOS */
  309. + #ifdef OS2
  310. +     (void) signal(an_int, SIG_ACK);
  311. + #else
  312.       (void) signal(SIGINT, inter);
  313. + #endif  /* OS2 */
  314.   #endif  /* MSDOS */
  315.       (void) signal(SIGFPE, SIG_DFL);    /* turn off FPE trapping */
  316.       if (term && term_init)
  317. ***************
  318. *** 322,327 ****
  319. --- 332,340 ----
  320.       register FILE *plotrc;
  321.       static char home[80];
  322.       static char rcfile[sizeof(PLOTRC)+80];
  323. + #ifdef OS2
  324. +     char *temp ;
  325. + #endif /*OS2*/
  326.   
  327.       /* Look for a gnuplot init file in . or home directory */
  328.   #ifdef vms
  329. ***************
  330. *** 340,346 ****
  331. --- 353,366 ----
  332.              }
  333.       }
  334.   #else /* AMIGA */
  335. + #ifdef OS2
  336. + /*strcpy() can't manage NULL arg */
  337. +     temp = getenv(HOME) ;
  338. +     if( temp == NULL ) temp="/gnuplot" ; /* set a default */
  339. +     (void) strcat(strcpy(home,temp),"/");
  340. + #else /*OS2*/
  341.       (void) strcat(strcpy(home,getenv(HOME)),"/");
  342. + #endif
  343.   #endif /* AMIGA */
  344.   #endif /* vms */
  345.   #ifdef NOCWDRC
  346. *** plot.h    1992/07/19 10:34:16    3.26
  347. --- plot.h    1992/07/23 11:27:16
  348. ***************
  349. *** 107,115 ****
  350.   
  351.   
  352.   #ifdef unix
  353.   #define OS "unix "
  354.   #endif
  355.   
  356.   #ifdef MSDOS
  357.   #define OS "MS-DOS "
  358. --- 107,121 ----
  359.   
  360.   
  361.   #ifdef unix
  362. + #ifdef OS2
  363. + #define OS "OS-2 "
  364. + #ifdef NOPIPE
  365. + #undef unix
  366. + #endif
  367. + #else
  368.   #define OS "unix "
  369.   #endif
  370. ! #endif
  371.   
  372.   #ifdef MSDOS
  373.   #define OS "MS-DOS "
  374. ***************
  375. *** 147,156 ****
  376. --- 153,167 ----
  377.   #include <math.h>
  378.   #define VERYLARGE HUGE
  379.   #else
  380. + #if defined (OS2)
  381. + /* emx seems to screw up if all digits here */
  382. + #define VERYLARGE (1.79769313e+308) 
  383. + #else
  384.   #define VERYLARGE HUGE
  385.   #endif
  386.   #endif
  387.   #endif
  388. + #endif
  389.   
  390.   
  391.   #define END_OF_COMMAND (c_token >= num_tokens || equals(c_token,";"))
  392. ***************
  393. *** 172,178 ****
  394.   #endif /* vms */
  395.   
  396.   /* If you don't have vfork, then undefine this */
  397. ! #if defined(NOVFORK) || defined(MSDOS)
  398.   # undef VFORK
  399.   #else
  400.   # ifdef unix
  401. --- 183,189 ----
  402.   #endif /* vms */
  403.   
  404.   /* If you don't have vfork, then undefine this */
  405. ! #if defined(NOVFORK) || defined(MSDOS) || defined(OS2)
  406.   # undef VFORK
  407.   #else
  408.   # ifdef unix
  409. ***************
  410. *** 190,196 ****
  411.   #ifdef vms
  412.   # define memcpy(dest,src,len) lib$movc3(&len,src,dest)
  413.   #else
  414. ! # if defined(MEMCPY) || defined(MSDOS)
  415.      /* use memcpy directly */
  416.   # else 
  417.   #  ifdef NOCOPY
  418. --- 201,207 ----
  419.   #ifdef vms
  420.   # define memcpy(dest,src,len) lib$movc3(&len,src,dest)
  421.   #else
  422. ! # if defined(MEMCPY) || defined(MSDOS)  || defined (OS2)
  423.      /* use memcpy directly */
  424.   # else 
  425.   #  ifdef NOCOPY
  426. ***************
  427. *** 206,217 ****
  428.    * In case you have MEMSET instead of BZERO. If you have something 
  429.    * else, define bzero to that something.
  430.    */
  431. ! #if defined(MEMSET) || defined(MSDOS)
  432.   #define bzero(dest,len)  (void)(memset(dest, (char)NULL, len))
  433.   #endif /* MEMSET || MSDOS */
  434.   
  435.   /* Give the name of your gamma function, or undefine it if you have none.  */
  436. ! #if defined(NOGAMMA) || defined(MSDOS)
  437.   # undef GAMMA
  438.   #else
  439.   # ifndef GAMMA
  440. --- 217,228 ----
  441.    * In case you have MEMSET instead of BZERO. If you have something 
  442.    * else, define bzero to that something.
  443.    */
  444. ! #if defined(MEMSET) || defined(MSDOS) || defined(OS2)
  445.   #define bzero(dest,len)  (void)(memset(dest, (char)NULL, len))
  446.   #endif /* MEMSET || MSDOS */
  447.   
  448.   /* Give the name of your gamma function, or undefine it if you have none.  */
  449. ! #if defined(NOGAMMA) || defined(MSDOS) || defined(OS2)
  450.   # undef GAMMA
  451.   #else
  452.   # ifndef GAMMA
  453. *** readline.c    1992/07/21 17:25:16    3.26
  454. --- readline.c    1992/07/23 11:27:38
  455. ***************
  456. *** 147,152 ****
  457. --- 147,186 ----
  458.       /* get characters */
  459.       for(;;) {
  460.           cur_char = getc(stdin);
  461. + #ifdef OS2
  462. + /* for emx: remap scan codes for cursor keys */
  463. +                 if( cur_char == 0 ) {
  464. +                     cur_char = getc(stdin);
  465. +                     switch( cur_char){
  466. +                         case 75:  /* left, map to ^B */
  467. +                             cur_char=2;
  468. +                             break ;
  469. +                         case 77:  /* right, map to ^F */
  470. +                             cur_char=6;
  471. +                             break ;
  472. +                         case 115: /* ctrl left */
  473. +                         case 71:  /* home, map to ^A */
  474. +                             cur_char=1;
  475. +                             break ;
  476. +                         case 116: /* ctrl right */
  477. +                         case 79:  /* end, map to ^E */
  478. +                             cur_char=5;
  479. +                             break ;
  480. +                         case 72:  /* up, map to ^P */
  481. +                             cur_char=16;
  482. +                             break ;
  483. +                         case 80:  /* down, map to ^N */
  484. +                             cur_char=14;
  485. +                             break ;
  486. +                         case 83:  /* delete, map to ^D */
  487. +                             cur_char=4;
  488. +                             break ;
  489. +                         default:  /* ignore */
  490. +                             cur_char=0;
  491. +                             continue ;
  492. +                             }
  493. +                         }
  494. + #endif  /*OS2*/
  495.           if(isprint(cur_char)) {
  496.               int i;
  497.               for(i=max_pos; i>cur_pos; i--) {
  498. ***************
  499. *** 522,527 ****
  500. --- 556,565 ----
  501.   
  502.           rl_termio.c_lflag &= ~(ICANON|ECHO|ECHOE|ECHOK|ECHONL|NOFLSH);
  503.           rl_termio.c_lflag |=  (ISIG);
  504. + #ifdef OS2
  505. + /* for emx: remove default terminal processing */
  506. +                 rl_termio.c_lflag &= ~(IDEFAULT);
  507. + #endif /* OS2 */
  508.   
  509.           rl_termio.c_cc[VMIN] = 1;
  510.           rl_termio.c_cc[VTIME] = 0;
  511. *** scanner.c    1992/07/19 13:24:18    3.26
  512. --- scanner.c    1992/07/24 14:38:08
  513. ***************
  514. *** 251,257 ****
  515.   }
  516.   
  517.   
  518. ! #ifdef MSDOS
  519.   
  520.   #ifdef __ZTC__
  521.   substitute(char *str,int max)
  522. --- 251,257 ----
  523.   }
  524.   
  525.   
  526. ! #if defined(MSDOS) || defined (NOPIPE)
  527.   
  528.   #ifdef __ZTC__
  529.   substitute(char *str,int max)
  530. ***************
  531. *** 322,328 ****
  532. --- 322,332 ----
  533.   
  534.       i = 0;
  535.       while ((c = getc(f)) != EOF) {
  536. + #ifdef OS2
  537. +         output[i++] = (((c=='\n')||(c=='\r')) ? ' ' : c);    /* newlines become blanks*/
  538. + #else
  539.           output[i++] = ((c == '\n') ? ' ' : c);    /* newlines become blanks*/
  540. + #endif
  541.           if (i == max) {
  542.   #ifdef AMIGA_AC_5
  543.               (void) close(fd);
  544. *** term.c    1992/07/19 10:15:18    3.26
  545. --- term.c    1992/07/23 11:27:32
  546. ***************
  547. *** 255,260 ****
  548. --- 255,264 ----
  549.   #include "term/pc.trm"
  550.   #endif
  551.   
  552. + #ifdef OS2PM                    /* os/2 presentation manager */
  553. + #include "term/pm.trm"
  554. + #endif
  555.   /*
  556.      all TEK types (TEK,BITGRAPH,KERMIT,VTTEK,SELANAR) are ifdef'd in tek.trm,
  557.      but most require various TEK routines.  Hence TEK must be defined for
  558. ***************
  559. *** 952,957 ****
  560. --- 956,970 ----
  561.          PPMgraphics, PBMmove, PBMvector, PPMlinetype,
  562.          PBMput_text, PBMtext_angle, null_justify_text, do_point,
  563.          do_arrow}
  564. + #endif
  565. + #ifdef OS2PM
  566. +     ,{"pm", "OS/2 Presentation Manager",
  567. +        PM_XMAX, PM_YMAX, PM_VCHAR, PM_HCHAR, 
  568. +        PM_VTIC, PM_HTIC, options_null, PM_init, PM_reset, 
  569. +        PM_text, null_scale, PM_graphics, PM_move, PM_vector,
  570. +        PM_linetype, PM_put_text, PM_text_angle, 
  571. +        PM_justify_text, line_and_point, do_arrow}
  572.   #endif
  573.   
  574.   #ifdef POSTSCRIPT
  575. *** term.h    1992/07/19 10:15:29    3.26
  576. --- term.h    1992/07/23 11:27:22
  577. ***************
  578. *** 49,55 ****
  579.    */
  580.   
  581.   /* These terminals are not relevant for MSDOS */
  582. ! #ifndef MSDOS
  583.   
  584.   #ifdef AMIGA_LC_5_1
  585.   #define AMIGASCREEN    /* Amiga custom screen */
  586. --- 49,55 ----
  587.    */
  588.   
  589.   /* These terminals are not relevant for MSDOS */
  590. ! #if !defined(MSDOS) && !defined(OS2)
  591.   
  592.   #ifdef AMIGA_LC_5_1
  593.   #define AMIGASCREEN    /* Amiga custom screen */
  594. ***************
  595. *** 131,134 ****
  596. --- 131,138 ----
  597.   #define HERCULES    /* IBM PC/Clone with Hercules graphics board */
  598.   #endif /* __TURBOC__ */
  599.   #endif /* MSDOS */
  600. + #ifdef OS2
  601. + #define OS2PM
  602. + #endif
  603.   
  604.